A software developer typically updates its software products on a periodic and/or event driven basis. The developer may produce an update by first manually identifying existing problems with a software product. The developer may then manually develop one or more fixes for the identified problems, optionally together with one or more new program features. Finally, the developer pushes the same fixes and features out to all users who are qualified to receive the update.